package app.maker.stock.impl;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import app.maker.entity.Produit;
import app.maker.error.ProduitException;
import app.maker.stock.intf.IProduit;

@Stateless(name = "daoProduit")
public class ProduitImpl implements IProduit {
	@PersistenceContext
	private EntityManager em;

	public int updateProduit(Produit produit) throws ProduitException {
		if (produit != null) {
			em.merge(produit);
			return produit.getIdProduit();
		} else {
			throw new ProduitException("Produit inexistant!");
		}
	}

	public void deleteProduit(Produit produit) throws ProduitException {
		if (produit != null)
			em.remove(produit);
		else
			throw new ProduitException("Produit inexistant!");
	}

	public Produit getProduit(int id) throws ProduitException {
		if (id > 0)
			return em.find(Produit.class, id);
		else
			throw new ProduitException("Identifiant incorrect!");
	}

	@SuppressWarnings("unchecked")
	public List<Produit> getAllProduit() {
		return em.createNamedQuery("Produit.findAll").getResultList();
	}

	public Produit getProduitByName(String nomProduit) throws ProduitException {
		Produit produit = (Produit) em
				.createNamedQuery("Produit.findProduitByName")
				.setParameter("param", nomProduit).getSingleResult();
		if (produit != null)
			return produit;
		else
			throw new ProduitException("Produit : " + nomProduit
					+ " inexistant !!!");
	}
}
